/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package juegocartas.comparadores;

import java.util.List;
import juegocartas.clases.JuegoMus;
import juegocartas.clases.Jugador;

/**
 *
 * @author JuanFran Jara Bellid
 */
public class ComparadorJuego implements Comparador {

    public Jugador obtenerJugadorMejorMano(Jugador jugadorUno, Jugador jugadorDos) {

        if (jugadorUno == null && jugadorDos != null) {
            return jugadorDos;
        }

        if (jugadorDos == null && jugadorUno != null) {
            return jugadorUno;
        }

        if (jugadorDos == null && jugadorUno == null) {
            return null;
        }

        int puntosJugadorUno = JuegoMus.obtenerPuntosJuego(jugadorUno.getMano());
        int puntosJugadorDos = JuegoMus.obtenerPuntosJuego(jugadorDos.getMano());

        if (puntosJugadorUno == 31) {
            return jugadorUno;
        }

        if (puntosJugadorUno > puntosJugadorDos) {
            if (puntosJugadorDos == 31) {
                return jugadorDos;
            }
            if (puntosJugadorDos == 32 && puntosJugadorUno > 32) {
                return jugadorDos;
            } else {
                return jugadorUno;
            }
        } else  if (puntosJugadorUno == puntosJugadorDos){
            return jugadorUno;
        } else {
            if (puntosJugadorUno == 32) {
                return jugadorUno;
            }
            return jugadorDos;
        }

        //return jugadorUno;
    }

    public Jugador obtenerJugadorGanadorMano(List<Jugador> listaJugadores) {
        Jugador mejorJugador = null;
        for (int i = 0; i < listaJugadores.size(); i++) {
            if (i == 0) {
                Jugador jugadorUno = listaJugadores.get(0);
                Jugador jugadorDos = listaJugadores.get(1);
                mejorJugador = obtenerJugadorMejorMano(
                        JuegoMus.tenerJuego(jugadorUno.getMano()) ? jugadorUno : null,
                        JuegoMus.tenerJuego(jugadorDos.getMano()) ? jugadorDos : null);
                i = 1;
            } else {
                Jugador jugador = listaJugadores.get(i);
                mejorJugador = obtenerJugadorMejorMano(mejorJugador, jugador);
            }
        }
        return mejorJugador;
    }

}
